using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: registro_esBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla registro_es, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha:  20/01/2012 19:25:17
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class registro_esBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "registro_es", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "registro_es", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
        public static bool Devuelve_fecha_max(DateTime fecha_actual)
        {
            bool r = false;
            try
            {
                DateTime aux = new DateTime();
                ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                DataTable fecha_ = bd.EjecutarSelectDs("MAX(hora_salida_ent_sal)", "registro_es", "res_comision='N'").Tables[0];

                if (fecha_.Rows[0][0] != DBNull.Value)
                {
                    aux = Convert.ToDateTime(fecha_.Rows[0][0]);
                    if (aux > fecha_actual)
                        r = false;
                    else
                        r = true;
                }
                else
                    r = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }

		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(registro_es datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO registro_es (fecha_ent_sal,hora_entrada_ent_sal,hora_salida_ent_sal,tipo_ent_sal,estado_hora_salida_ent_sal,id_huella_fk,id_cargahoraria_fk,id_empleado_fk,descripcion_ent_sal,fecha_ent_sal_fin,tipo_trabajo,id_salario_fk,res_comision) VALUES (?fecha_ent_sal,?hora_entrada_ent_sal,?hora_salida_ent_sal,?tipo_ent_sal,?estado_hora_salida_ent_sal,?id_huella_fk,?id_cargahoraria_fk,?id_empleado_fk,?descripcion_ent_sal,?fecha_ent_sal_fin,?tipo_trabajo,?id_salario_fk,?res_comision);";
				string strConectionUpdate = "UPDATE registro_es SET fecha_ent_sal = ?fecha_ent_sal,hora_entrada_ent_sal = ?hora_entrada_ent_sal,hora_salida_ent_sal = ?hora_salida_ent_sal,tipo_ent_sal = ?tipo_ent_sal,estado_hora_salida_ent_sal = ?estado_hora_salida_ent_sal,id_huella_fk = ?id_huella_fk,id_cargahoraria_fk = ?id_cargahoraria_fk,id_empleado_fk = ?id_empleado_fk,descripcion_ent_sal = ?descripcion_ent_sal,fecha_ent_sal_fin = ?fecha_ent_sal_fin,tipo_trabajo = ?tipo_trabajo,id_salario_fk = ?id_salario_fk,res_comision = ?res_comision WHERE id_ent_sal=?id_ent_sal;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_ent_sal = new MySqlParameter("?id_ent_sal", MySqlDbType.Int32);
				MySqlParameter psqlFecha_ent_sal = new MySqlParameter("?fecha_ent_sal", MySqlDbType.Datetime);
				MySqlParameter psqlHora_entrada_ent_sal = new MySqlParameter("?hora_entrada_ent_sal", MySqlDbType.Datetime);
				MySqlParameter psqlHora_salida_ent_sal = new MySqlParameter("?hora_salida_ent_sal", MySqlDbType.Datetime);
				MySqlParameter psqlTipo_ent_sal = new MySqlParameter("?tipo_ent_sal", MySqlDbType.VarChar,20);
				MySqlParameter psqlEstado_hora_salida_ent_sal = new MySqlParameter("?estado_hora_salida_ent_sal", MySqlDbType.Int32);
				MySqlParameter psqlId_huella_fk = new MySqlParameter("?id_huella_fk", MySqlDbType.Int32);
				MySqlParameter psqlId_cargahoraria_fk = new MySqlParameter("?id_cargahoraria_fk", MySqlDbType.Int32);
				MySqlParameter psqlId_empleado_fk = new MySqlParameter("?id_empleado_fk", MySqlDbType.Int32);
				MySqlParameter psqlDescripcion_ent_sal = new MySqlParameter("?descripcion_ent_sal", MySqlDbType.VarChar,100);
				MySqlParameter psqlFecha_ent_sal_fin = new MySqlParameter("?fecha_ent_sal_fin", MySqlDbType.Datetime);
				MySqlParameter psqlTipo_trabajo = new MySqlParameter("?tipo_trabajo", MySqlDbType.VarChar,50);
				MySqlParameter psqlId_salario_fk = new MySqlParameter("?id_salario_fk", MySqlDbType.Int32);
				MySqlParameter psqlRes_comision = new MySqlParameter("?res_comision", MySqlDbType.VarChar,1);

				psqlId_ent_sal.Value = datos.Id_ent_sal;
				psqlFecha_ent_sal.Value = datos.Fecha_ent_sal;
				psqlHora_entrada_ent_sal.Value = datos.Hora_entrada_ent_sal;
				psqlHora_salida_ent_sal.Value = datos.Hora_salida_ent_sal;
				psqlTipo_ent_sal.Value = datos.Tipo_ent_sal;
				psqlEstado_hora_salida_ent_sal.Value = datos.Estado_hora_salida_ent_sal;
				psqlId_huella_fk.Value = datos.Id_huella_fk;
				psqlId_cargahoraria_fk.Value = datos.Id_cargahoraria_fk;
				psqlId_empleado_fk.Value = datos.Id_empleado_fk;
				psqlDescripcion_ent_sal.Value = datos.Descripcion_ent_sal;
				psqlFecha_ent_sal_fin.Value = datos.Fecha_ent_sal_fin;
				psqlTipo_trabajo.Value = datos.Tipo_trabajo;
				psqlId_salario_fk.Value = datos.Id_salario_fk;
				psqlRes_comision.Value = datos.Res_comision;

				filtro = string.Format("id_ent_sal='{0}'", datos.Id_ent_sal);
				if (!Existe(filtro))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_ent_sal
							, psqlFecha_ent_sal
							, psqlHora_entrada_ent_sal
							, psqlHora_salida_ent_sal
							, psqlTipo_ent_sal
							, psqlEstado_hora_salida_ent_sal
							, psqlId_huella_fk
							, psqlId_cargahoraria_fk
							, psqlId_empleado_fk
							, psqlDescripcion_ent_sal
							, psqlFecha_ent_sal_fin
							, psqlTipo_trabajo
							, psqlId_salario_fk
							, psqlRes_comision
							);
					MessageBox.Show("Se grabo [registro_es] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_ent_sal
							, psqlFecha_ent_sal
							, psqlHora_entrada_ent_sal
							, psqlHora_salida_ent_sal
							, psqlTipo_ent_sal
							, psqlEstado_hora_salida_ent_sal
							, psqlId_huella_fk
							, psqlId_cargahoraria_fk
							, psqlId_empleado_fk
							, psqlDescripcion_ent_sal
							, psqlFecha_ent_sal_fin
							, psqlTipo_trabajo
							, psqlId_salario_fk
							, psqlRes_comision
							);
					MessageBox.Show("Se actualizó [registro_es] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(registro_es datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				string filtro = string.Format("id_ent_sal='{0}'", datos.Id_ent_sal);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("registro_es"
						, new CampoValor("fecha_ent_sal",ValidarBuilder.FormatoFecha( datos.Fecha_ent_sal))
						, new CampoValor("hora_entrada_ent_sal",ValidarBuilder.FormatoFecha( datos.Hora_entrada_ent_sal))
						, new CampoValor("hora_salida_ent_sal",ValidarBuilder.FormatoFecha( datos.Hora_salida_ent_sal))
						, new CampoValor("tipo_ent_sal", datos.Tipo_ent_sal)
						, new CampoValor("estado_hora_salida_ent_sal", datos.Estado_hora_salida_ent_sal.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						, new CampoValor("id_cargahoraria_fk", datos.Id_cargahoraria_fk.ToString())
						, new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
						, new CampoValor("descripcion_ent_sal", datos.Descripcion_ent_sal)
						, new CampoValor("fecha_ent_sal_fin",ValidarBuilder.FormatoFecha( datos.Fecha_ent_sal_fin))
						, new CampoValor("tipo_trabajo", datos.Tipo_trabajo)
						, new CampoValor("id_salario_fk", datos.Id_salario_fk.ToString())
						, new CampoValor("res_comision", datos.Res_comision)
						);
					MessageBox.Show("Se grabo [registro_es] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("registro_es", filtro
						, new CampoValor("fecha_ent_sal",ValidarBuilder.FormatoFecha( datos.Fecha_ent_sal))
						, new CampoValor("hora_entrada_ent_sal",ValidarBuilder.FormatoFecha( datos.Hora_entrada_ent_sal))
						, new CampoValor("hora_salida_ent_sal",ValidarBuilder.FormatoFecha( datos.Hora_salida_ent_sal))
						, new CampoValor("tipo_ent_sal", datos.Tipo_ent_sal)
						, new CampoValor("estado_hora_salida_ent_sal", datos.Estado_hora_salida_ent_sal.ToString())
						, new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
						, new CampoValor("id_cargahoraria_fk", datos.Id_cargahoraria_fk.ToString())
						, new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
						, new CampoValor("descripcion_ent_sal", datos.Descripcion_ent_sal)
						, new CampoValor("fecha_ent_sal_fin",ValidarBuilder.FormatoFecha( datos.Fecha_ent_sal_fin))
						, new CampoValor("tipo_trabajo", datos.Tipo_trabajo)
						, new CampoValor("id_salario_fk", datos.Id_salario_fk.ToString())
						, new CampoValor("res_comision", datos.Res_comision)
						);
					MessageBox.Show("Se actualizó [registro_es] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		
       public static void GrabarViaSql(registro_es datos,bool valida_demo)
		{
            bool continue_ = false;
            int numero_registros = 0;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				string filtro = string.Format("id_ent_sal='{0}'", datos.Id_ent_sal);

                if (valida_demo)
                {
                    numero_registros = ValidarBuilder.UltimoNumero("registro_es", "id_ent_sal", "");
                    if (numero_registros <= 50)
                        continue_ = true;
                    else
                        continue_ = false;
                }
                else
                    continue_ = true;

                if (continue_)
                {

                    if (!Existe(filtro))
                    {

                        bd.EjecutarInsert("registro_es"
                            , new CampoValor("fecha_ent_sal", ValidarBuilder.FormatoFecha(datos.Fecha_ent_sal))
                            , new CampoValor("hora_entrada_ent_sal", ValidarBuilder.FormatoFecha(datos.Hora_entrada_ent_sal))
                            , new CampoValor("hora_salida_ent_sal", ValidarBuilder.FormatoFecha(datos.Hora_salida_ent_sal))
                            , new CampoValor("tipo_ent_sal", datos.Tipo_ent_sal)
                            , new CampoValor("estado_hora_salida_ent_sal", datos.Estado_hora_salida_ent_sal.ToString())
                            , new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
                            , new CampoValor("id_cargahoraria_fk", datos.Id_cargahoraria_fk.ToString())
                            , new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
                            , new CampoValor("descripcion_ent_sal", datos.Descripcion_ent_sal)
                            , new CampoValor("fecha_ent_sal_fin", ValidarBuilder.FormatoFecha(datos.Fecha_ent_sal_fin))
                            , new CampoValor("tipo_trabajo", datos.Tipo_trabajo)
                            , new CampoValor("id_salario_fk", datos.Id_salario_fk.ToString())
                            , new CampoValor("res_comision", datos.Res_comision)
                            );
                        //if (mensaje)
                        //    MessageBox.Show("Se grabo [registro_es] exitosamente....", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        bd.EjecutarUpdate("registro_es", filtro
                            , new CampoValor("fecha_ent_sal", ValidarBuilder.FormatoFecha(datos.Fecha_ent_sal))
                            , new CampoValor("hora_entrada_ent_sal", ValidarBuilder.FormatoFecha(datos.Hora_entrada_ent_sal))
                            , new CampoValor("hora_salida_ent_sal", ValidarBuilder.FormatoFecha(datos.Hora_salida_ent_sal))
                            , new CampoValor("tipo_ent_sal", datos.Tipo_ent_sal)
                            , new CampoValor("estado_hora_salida_ent_sal", datos.Estado_hora_salida_ent_sal.ToString())
                            , new CampoValor("id_huella_fk", datos.Id_huella_fk.ToString())
                            , new CampoValor("id_cargahoraria_fk", datos.Id_cargahoraria_fk.ToString())
                            , new CampoValor("id_empleado_fk", datos.Id_empleado_fk.ToString())
                            , new CampoValor("descripcion_ent_sal", datos.Descripcion_ent_sal)
                            , new CampoValor("fecha_ent_sal_fin", ValidarBuilder.FormatoFecha(datos.Fecha_ent_sal_fin))
                            , new CampoValor("tipo_trabajo", datos.Tipo_trabajo)
                            , new CampoValor("id_salario_fk", datos.Id_salario_fk.ToString())
                            , new CampoValor("res_comision", datos.Res_comision)
                            );
                        //if (mensaje)
                        //    MessageBox.Show("Se actualizó [registro_es] exitosamente....", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                    MessageBox.Show("No tiene licencia para este software");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static registro_es Recuperar(string filtro)
		{
			registro_es r = new registro_es();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_ent_sal = Convert.ToInt32(ds.Rows[0]["id_ent_sal"]);
					if (ds.Rows[0]["fecha_ent_sal"] != System.DBNull.Value)
						r.Fecha_ent_sal = Convert.ToDateTime(ds.Rows[0]["fecha_ent_sal"]);
					if (ds.Rows[0]["fecha_ent_sal"] == System.DBNull.Value)
						r.Fecha_ent_sal = DateTime.Now;
					if (ds.Rows[0]["hora_entrada_ent_sal"] != System.DBNull.Value)
						r.Hora_entrada_ent_sal = Convert.ToDateTime(ds.Rows[0]["hora_entrada_ent_sal"]);
					if (ds.Rows[0]["hora_entrada_ent_sal"] == System.DBNull.Value)
						r.Hora_entrada_ent_sal = DateTime.Now;
					if (ds.Rows[0]["hora_salida_ent_sal"] != System.DBNull.Value)
						r.Hora_salida_ent_sal = Convert.ToDateTime(ds.Rows[0]["hora_salida_ent_sal"]);
					if (ds.Rows[0]["hora_salida_ent_sal"] == System.DBNull.Value)
						r.Hora_salida_ent_sal = DateTime.Now;
					if (ds.Rows[0]["tipo_ent_sal"] != System.DBNull.Value)
						r.Tipo_ent_sal = ds.Rows[0]["tipo_ent_sal"].ToString();
					if (ds.Rows[0]["tipo_ent_sal"] == System.DBNull.Value)
						r.Tipo_ent_sal = "";
					r.Estado_hora_salida_ent_sal = Convert.ToInt32(ds.Rows[0]["estado_hora_salida_ent_sal"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[0]["id_huella_fk"]);
					r.Id_cargahoraria_fk = Convert.ToInt32(ds.Rows[0]["id_cargahoraria_fk"]);
					r.Id_empleado_fk = Convert.ToInt32(ds.Rows[0]["id_empleado_fk"]);
					if (ds.Rows[0]["descripcion_ent_sal"] != System.DBNull.Value)
						r.Descripcion_ent_sal = ds.Rows[0]["descripcion_ent_sal"].ToString();
					if (ds.Rows[0]["descripcion_ent_sal"] == System.DBNull.Value)
						r.Descripcion_ent_sal = "";
					if (ds.Rows[0]["fecha_ent_sal_fin"] != System.DBNull.Value)
						r.Fecha_ent_sal_fin = Convert.ToDateTime(ds.Rows[0]["fecha_ent_sal_fin"]);
					if (ds.Rows[0]["fecha_ent_sal_fin"] == System.DBNull.Value)
						r.Fecha_ent_sal_fin = DateTime.Now;
					if (ds.Rows[0]["tipo_trabajo"] != System.DBNull.Value)
						r.Tipo_trabajo = ds.Rows[0]["tipo_trabajo"].ToString();
					if (ds.Rows[0]["tipo_trabajo"] == System.DBNull.Value)
						r.Tipo_trabajo = "";
					r.Id_salario_fk = Convert.ToInt32(ds.Rows[0]["id_salario_fk"]);
					if (ds.Rows[0]["res_comision"] != System.DBNull.Value)
						r.Res_comision = ds.Rows[0]["res_comision"].ToString();
					if (ds.Rows[0]["res_comision"] == System.DBNull.Value)
						r.Res_comision = "";
					r.Empleados = empleadosBuilder.Recuperar("id_emp=" + ds.Rows[0]["id_empleado_fk"]);
					r.Registro_huellas = registro_huellasBuilder.Recuperar("id_huella=" + ds.Rows[0]["id_huella_fk"]);
					r.Horario_empresa = horario_empresaBuilder.Recuperar("id_hora=" + ds.Rows[0]["id_cargahoraria_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static registro_es Recuperar_sin_joins(string filtro)
		{
			registro_es r = new registro_es();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_ent_sal = Convert.ToInt32(ds.Rows[0]["id_ent_sal"]);
					if (ds.Rows[0]["fecha_ent_sal"] != System.DBNull.Value)
						r.Fecha_ent_sal = Convert.ToDateTime(ds.Rows[0]["fecha_ent_sal"]);
					if (ds.Rows[0]["fecha_ent_sal"] == System.DBNull.Value)
						r.Fecha_ent_sal = DateTime.Now;
					if (ds.Rows[0]["hora_entrada_ent_sal"] != System.DBNull.Value)
						r.Hora_entrada_ent_sal = Convert.ToDateTime(ds.Rows[0]["hora_entrada_ent_sal"]);
					if (ds.Rows[0]["hora_entrada_ent_sal"] == System.DBNull.Value)
						r.Hora_entrada_ent_sal = DateTime.Now;
					if (ds.Rows[0]["hora_salida_ent_sal"] != System.DBNull.Value)
						r.Hora_salida_ent_sal = Convert.ToDateTime(ds.Rows[0]["hora_salida_ent_sal"]);
					if (ds.Rows[0]["hora_salida_ent_sal"] == System.DBNull.Value)
						r.Hora_salida_ent_sal = DateTime.Now;
					if (ds.Rows[0]["tipo_ent_sal"] != System.DBNull.Value)
						r.Tipo_ent_sal = ds.Rows[0]["tipo_ent_sal"].ToString();
					if (ds.Rows[0]["tipo_ent_sal"] == System.DBNull.Value)
						r.Tipo_ent_sal = "";
					r.Estado_hora_salida_ent_sal = Convert.ToInt32(ds.Rows[0]["estado_hora_salida_ent_sal"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[0]["id_huella_fk"]);
					r.Id_cargahoraria_fk = Convert.ToInt32(ds.Rows[0]["id_cargahoraria_fk"]);
					r.Id_empleado_fk = Convert.ToInt32(ds.Rows[0]["id_empleado_fk"]);
					if (ds.Rows[0]["descripcion_ent_sal"] != System.DBNull.Value)
						r.Descripcion_ent_sal = ds.Rows[0]["descripcion_ent_sal"].ToString();
					if (ds.Rows[0]["descripcion_ent_sal"] == System.DBNull.Value)
						r.Descripcion_ent_sal = "";
					if (ds.Rows[0]["fecha_ent_sal_fin"] != System.DBNull.Value)
						r.Fecha_ent_sal_fin = Convert.ToDateTime(ds.Rows[0]["fecha_ent_sal_fin"]);
					if (ds.Rows[0]["fecha_ent_sal_fin"] == System.DBNull.Value)
						r.Fecha_ent_sal_fin = DateTime.Now;
					if (ds.Rows[0]["tipo_trabajo"] != System.DBNull.Value)
						r.Tipo_trabajo = ds.Rows[0]["tipo_trabajo"].ToString();
					if (ds.Rows[0]["tipo_trabajo"] == System.DBNull.Value)
						r.Tipo_trabajo = "";
					r.Id_salario_fk = Convert.ToInt32(ds.Rows[0]["id_salario_fk"]);
					if (ds.Rows[0]["res_comision"] != System.DBNull.Value)
						r.Res_comision = ds.Rows[0]["res_comision"].ToString();
					if (ds.Rows[0]["res_comision"] == System.DBNull.Value)
						r.Res_comision = "";
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static registro_es RecuperarUltimo(string filtro)
		{
			registro_es r = new registro_es();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_ent_sal = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_ent_sal"]);
					if (ds.Rows[ds.Rows.Count -1]["fecha_ent_sal"] != System.DBNull.Value)
						r.Fecha_ent_sal = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["fecha_ent_sal"]);
					if (ds.Rows[ds.Rows.Count -1]["fecha_ent_sal"] == System.DBNull.Value)
						r.Fecha_ent_sal = DateTime.Now;
					if (ds.Rows[ds.Rows.Count -1]["hora_entrada_ent_sal"] != System.DBNull.Value)
						r.Hora_entrada_ent_sal = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["hora_entrada_ent_sal"]);
					if (ds.Rows[ds.Rows.Count -1]["hora_entrada_ent_sal"] == System.DBNull.Value)
						r.Hora_entrada_ent_sal = DateTime.Now;
					if (ds.Rows[ds.Rows.Count -1]["hora_salida_ent_sal"] != System.DBNull.Value)
						r.Hora_salida_ent_sal = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["hora_salida_ent_sal"]);
					if (ds.Rows[ds.Rows.Count -1]["hora_salida_ent_sal"] == System.DBNull.Value)
						r.Hora_salida_ent_sal = DateTime.Now;
					if (ds.Rows[ds.Rows.Count - 1]["tipo_ent_sal"] != System.DBNull.Value)
						r.Tipo_ent_sal = ds.Rows[ds.Rows.Count - 1]["tipo_ent_sal"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["tipo_ent_sal"] == System.DBNull.Value)
						r.Tipo_ent_sal = "";
					r.Estado_hora_salida_ent_sal = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["estado_hora_salida_ent_sal"]);
					r.Id_huella_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_huella_fk"]);
					r.Id_cargahoraria_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_cargahoraria_fk"]);
					r.Id_empleado_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_empleado_fk"]);
					if (ds.Rows[ds.Rows.Count - 1]["descripcion_ent_sal"] != System.DBNull.Value)
						r.Descripcion_ent_sal = ds.Rows[ds.Rows.Count - 1]["descripcion_ent_sal"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["descripcion_ent_sal"] == System.DBNull.Value)
						r.Descripcion_ent_sal = "";
					if (ds.Rows[ds.Rows.Count -1]["fecha_ent_sal_fin"] != System.DBNull.Value)
						r.Fecha_ent_sal_fin = Convert.ToDateTime(ds.Rows[ds.Rows.Count -1]["fecha_ent_sal_fin"]);
					if (ds.Rows[ds.Rows.Count -1]["fecha_ent_sal_fin"] == System.DBNull.Value)
						r.Fecha_ent_sal_fin = DateTime.Now;
					if (ds.Rows[ds.Rows.Count - 1]["tipo_trabajo"] != System.DBNull.Value)
						r.Tipo_trabajo = ds.Rows[ds.Rows.Count - 1]["tipo_trabajo"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["tipo_trabajo"] == System.DBNull.Value)
						r.Tipo_trabajo = "";
					r.Id_salario_fk = Convert.ToInt32(ds.Rows[ds.Rows.Count-1]["id_salario_fk"]);
					if (ds.Rows[ds.Rows.Count - 1]["res_comision"] != System.DBNull.Value)
						r.Res_comision = ds.Rows[ds.Rows.Count - 1]["res_comision"].ToString();
					if (ds.Rows[ds.Rows.Count - 1]["res_comision"] == System.DBNull.Value)
						r.Res_comision = "";
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("registro_es", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbregistro_es, string filtro, string nombre_display)
		{
			cmbregistro_es.DataSource = ListarTodos(filtro);
			cmbregistro_es.DisplayMember = nombre_display;
			cmbregistro_es.ValueMember = "id_ent_sal";
		}

		public static DataTable ListarTodos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("id_ent_sal AS id_ent_sal,fecha_ent_sal AS fecha_ent_sal,hora_entrada_ent_sal AS hora_entrada_ent_sal,hora_salida_ent_sal AS hora_salida_ent_sal,tipo_ent_sal AS tipo_ent_sal,estado_hora_salida_ent_sal AS estado_hora_salida_ent_sal,id_huella_fk AS id_huella_fk,id_cargahoraria_fk AS id_cargahoraria_fk,id_empleado_fk AS id_empleado_fk,descripcion_ent_sal AS descripcion_ent_sal,fecha_ent_sal_fin AS fecha_ent_sal_fin,tipo_trabajo AS tipo_trabajo,id_salario_fk AS id_salario_fk,res_comision AS res_comision", "registro_es", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static List<registro_es> ListarTodos_List(string filtro)
		{
			List<registro_es> r = new List<registro_es>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_ent_sal="+dt.Rows[i]["id_ent_sal"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp";
				else
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, empleados","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "registro_es.id_ent_sal AS registro_es.id_ent_sal,registro_es.fecha_ent_sal AS registro_es.fecha_ent_sal,registro_es.hora_entrada_ent_sal AS registro_es.hora_entrada_ent_sal,registro_es.hora_salida_ent_sal AS registro_es.hora_salida_ent_sal,registro_es.tipo_ent_sal AS registro_es.tipo_ent_sal,registro_es.estado_hora_salida_ent_sal AS registro_es.estado_hora_salida_ent_sal,registro_es.id_huella_fk AS registro_es.id_huella_fk,registro_es.id_cargahoraria_fk AS registro_es.id_cargahoraria_fk,registro_es.id_empleado_fk AS registro_es.id_empleado_fk,registro_es.descripcion_ent_sal AS registro_es.descripcion_ent_sal,registro_es.fecha_ent_sal_fin AS registro_es.fecha_ent_sal_fin,registro_es.tipo_trabajo AS registro_es.tipo_trabajo,registro_es.id_salario_fk AS registro_es.id_salario_fk,registro_es.res_comision AS registro_es.res_comision," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_controla_salida AS empleados.emp_controla_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp";
				else
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, empleados",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Registro_huellas(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_huella_fk = registro_huellas.id_huella";
				else
					joins_ = "registro_es.id_huella_fk = registro_huellas.id_huella AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, registro_huellas","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Registro_huellas_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "registro_es.id_ent_sal AS registro_es.id_ent_sal,registro_es.fecha_ent_sal AS registro_es.fecha_ent_sal,registro_es.hora_entrada_ent_sal AS registro_es.hora_entrada_ent_sal,registro_es.hora_salida_ent_sal AS registro_es.hora_salida_ent_sal,registro_es.tipo_ent_sal AS registro_es.tipo_ent_sal,registro_es.estado_hora_salida_ent_sal AS registro_es.estado_hora_salida_ent_sal,registro_es.id_huella_fk AS registro_es.id_huella_fk,registro_es.id_cargahoraria_fk AS registro_es.id_cargahoraria_fk,registro_es.id_empleado_fk AS registro_es.id_empleado_fk,registro_es.descripcion_ent_sal AS registro_es.descripcion_ent_sal,registro_es.fecha_ent_sal_fin AS registro_es.fecha_ent_sal_fin,registro_es.tipo_trabajo AS registro_es.tipo_trabajo,registro_es.id_salario_fk AS registro_es.id_salario_fk,registro_es.res_comision AS registro_es.res_comision," + 
							 "registro_huellas.id_huella AS registro_huellas.id_huella,registro_huellas.plantilla_huella AS registro_huellas.plantilla_huella,registro_huellas.id_empleado_fk AS registro_huellas.id_empleado_fk,registro_huellas.imagen_huella AS registro_huellas.imagen_huella,registro_huellas.id_dedo_fk AS registro_huellas.id_dedo_fk";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_huella_fk = registro_huellas.id_huella";
				else
					joins_ = "registro_es.id_huella_fk = registro_huellas.id_huella AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, registro_huellas",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Horario_empresa(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_cargahoraria_fk = horario_empresa.id_hora";
				else
					joins_ = "registro_es.id_cargahoraria_fk = horario_empresa.id_hora AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, horario_empresa","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Horario_empresa_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "registro_es.id_ent_sal AS registro_es.id_ent_sal,registro_es.fecha_ent_sal AS registro_es.fecha_ent_sal,registro_es.hora_entrada_ent_sal AS registro_es.hora_entrada_ent_sal,registro_es.hora_salida_ent_sal AS registro_es.hora_salida_ent_sal,registro_es.tipo_ent_sal AS registro_es.tipo_ent_sal,registro_es.estado_hora_salida_ent_sal AS registro_es.estado_hora_salida_ent_sal,registro_es.id_huella_fk AS registro_es.id_huella_fk,registro_es.id_cargahoraria_fk AS registro_es.id_cargahoraria_fk,registro_es.id_empleado_fk AS registro_es.id_empleado_fk,registro_es.descripcion_ent_sal AS registro_es.descripcion_ent_sal,registro_es.fecha_ent_sal_fin AS registro_es.fecha_ent_sal_fin,registro_es.tipo_trabajo AS registro_es.tipo_trabajo,registro_es.id_salario_fk AS registro_es.id_salario_fk,registro_es.res_comision AS registro_es.res_comision," + 
							 "horario_empresa.id_hora AS horario_empresa.id_hora,horario_empresa.nombre_hora AS horario_empresa.nombre_hora,horario_empresa.hora_inicio_hora AS horario_empresa.hora_inicio_hora,horario_empresa.hora_fin_hora AS horario_empresa.hora_fin_hora,horario_empresa.jornada AS horario_empresa.jornada,horario_empresa.id_emp_hora_fk AS horario_empresa.id_emp_hora_fk,horario_empresa.estado_hora AS horario_empresa.estado_hora,horario_empresa.fecha_registro_hora AS horario_empresa.fecha_registro_hora,horario_empresa.cat_jor_id_fk AS horario_empresa.cat_jor_id_fk,horario_empresa.caduca_hora AS horario_empresa.caduca_hora";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_cargahoraria_fk = horario_empresa.id_hora";
				else
					joins_ = "registro_es.id_cargahoraria_fk = horario_empresa.id_hora AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "registro_es, horario_empresa",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_huella_fk = registro_huellas.id_huella AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora ";
				else
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_huella_fk = registro_huellas.id_huella AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados,registro_huellas,horario_empresa,registro_es","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "registro_es.id_ent_sal AS registro_es.id_ent_sal,registro_es.fecha_ent_sal AS registro_es.fecha_ent_sal,registro_es.hora_entrada_ent_sal AS registro_es.hora_entrada_ent_sal,registro_es.hora_salida_ent_sal AS registro_es.hora_salida_ent_sal,registro_es.tipo_ent_sal AS registro_es.tipo_ent_sal,registro_es.estado_hora_salida_ent_sal AS registro_es.estado_hora_salida_ent_sal,registro_es.id_huella_fk AS registro_es.id_huella_fk,registro_es.id_cargahoraria_fk AS registro_es.id_cargahoraria_fk,registro_es.id_empleado_fk AS registro_es.id_empleado_fk,registro_es.descripcion_ent_sal AS registro_es.descripcion_ent_sal,registro_es.fecha_ent_sal_fin AS registro_es.fecha_ent_sal_fin,registro_es.tipo_trabajo AS registro_es.tipo_trabajo,registro_es.id_salario_fk AS registro_es.id_salario_fk,registro_es.res_comision AS registro_es.res_comision," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk,empleados.nro_horas_ingreso AS empleados.nro_horas_ingreso,empleados.nro_horas_atraso AS empleados.nro_horas_atraso,empleados.nro_horas_salida AS empleados.nro_horas_salida,empleados.emp_controla_salida AS empleados.emp_controla_salida,empleados.emp_entrada_especial AS empleados.emp_entrada_especial," + 
							 "registro_huellas.id_huella AS registro_huellas.id_huella,registro_huellas.plantilla_huella AS registro_huellas.plantilla_huella,registro_huellas.id_empleado_fk AS registro_huellas.id_empleado_fk,registro_huellas.imagen_huella AS registro_huellas.imagen_huella,registro_huellas.id_dedo_fk AS registro_huellas.id_dedo_fk," + 
							 "horario_empresa.id_hora AS horario_empresa.id_hora,horario_empresa.nombre_hora AS horario_empresa.nombre_hora,horario_empresa.hora_inicio_hora AS horario_empresa.hora_inicio_hora,horario_empresa.hora_fin_hora AS horario_empresa.hora_fin_hora,horario_empresa.jornada AS horario_empresa.jornada,horario_empresa.id_emp_hora_fk AS horario_empresa.id_emp_hora_fk,horario_empresa.estado_hora AS horario_empresa.estado_hora,horario_empresa.fecha_registro_hora AS horario_empresa.fecha_registro_hora,horario_empresa.cat_jor_id_fk AS horario_empresa.cat_jor_id_fk,horario_empresa.caduca_hora AS horario_empresa.caduca_hora";
			try
			{
				if(filtro=="")
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_huella_fk = registro_huellas.id_huella AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora ";
				else
					joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_huella_fk = registro_huellas.id_huella AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados,registro_huellas,horario_empresa,registro_es",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
        public static List<registro_es> ListarTodos_List_Join_Horario_Empresa(string filtro)
        {
            List<registro_es> r = new List<registro_es>();
            try
            {
                DataTable dt = ListarTodos_Joins_Horario_empresa(filtro);
                for (int i = 0; i < dt.Rows.Count; i++)
                    r.Add(Recuperar("id_ent_sal=" + dt.Rows[i]["id_ent_sal"]));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
        public static DataTable ListarTodos_Joins_Alias_personaliza(string filtro)
        {
            DataTable r = new DataTable();
            string joins_ = "";
            string campos_ = "empleados.id_emp AS \"ID EMP.\",empleados.cedula_emp AS \"CI. / Ruc.\",CONCAT(empleados.nombre_emp,' ',empleados.apellido_emp) AS Empleado," +
                             "registro_es.id_ent_sal as ID,registro_es.tipo_trabajo AS SITUACION,registro_es.fecha_ent_sal AS \"Fecha Ingreso\",registro_es.hora_entrada_ent_sal AS \"Hora Entrada\"," +
                             "horario_empresa.nombre_hora AS Dia,horario_empresa.hora_fin_hora AS \"Hora a Salir\",horario_empresa.jornada AS Jornada";
            try
            {
                if (filtro == "")
                    joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora ";
                else
                    joins_ = "registro_es.id_empleado_fk = empleados.id_emp AND registro_es.id_cargahoraria_fk = horario_empresa.id_hora AND  " + filtro;
                r = ValidarBuilder.ListarTodos(joins_, "empleados,horario_empresa,registro_es", campos_).Tables[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return r;
        }
		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static registro_es valida_campos_registro_es(Control ctrl_id_ent_sal,DateTime dpk_fecha_ent_sal,DateTime dpk_hora_entrada_ent_sal,DateTime dpk_hora_salida_ent_sal,TextBox txt_tipo_ent_sal,Control ctrl_estado_hora_salida_ent_sal,Control ctrl_id_huella_fk,Control ctrl_id_cargahoraria_fk,Control ctrl_id_empleado_fk,TextBox txt_descripcion_ent_sal,DateTime dpk_fecha_ent_sal_fin,TextBox txt_tipo_trabajo,Control ctrl_id_salario_fk,TextBox txt_res_comision)
		{
			bool r = true;
			registro_es new_registro_es = new registro_es();
			try
			{
				if(ctrl_id_ent_sal.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_ent_sal = (TextBox)ctrl_id_ent_sal;
					if (txt_id_ent_sal.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_ent_sal.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Id_ent_sal = Convert.ToInt32(txt_id_ent_sal.Text);
				}
				if(ctrl_id_ent_sal.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_ent_sal = (ComboBox)ctrl_id_ent_sal;
					if (cmb_id_ent_sal.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Id_ent_sal = Convert.ToInt32(cmb_id_ent_sal.SelectedValue);
				}
				if (r)
					new_registro_es.Fecha_ent_sal = dpk_fecha_ent_sal;
				if (r)
					new_registro_es.Hora_entrada_ent_sal = dpk_hora_entrada_ent_sal;
				if (r)
					new_registro_es.Hora_salida_ent_sal = dpk_hora_salida_ent_sal;
				if (txt_tipo_ent_sal.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la tipo_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_registro_es.Tipo_ent_sal = txt_tipo_ent_sal.Text;
				if(ctrl_estado_hora_salida_ent_sal.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_estado_hora_salida_ent_sal = (TextBox)ctrl_estado_hora_salida_ent_sal;
					if (txt_estado_hora_salida_ent_sal.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la estado_hora_salida_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_estado_hora_salida_ent_sal.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la estado_hora_salida_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Estado_hora_salida_ent_sal = Convert.ToInt32(txt_estado_hora_salida_ent_sal.Text);
				}
				if(ctrl_estado_hora_salida_ent_sal.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_estado_hora_salida_ent_sal = (ComboBox)ctrl_estado_hora_salida_ent_sal;
					if (cmb_estado_hora_salida_ent_sal.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la estado_hora_salida_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Estado_hora_salida_ent_sal = Convert.ToInt32(cmb_estado_hora_salida_ent_sal.SelectedValue);
				}
				if(ctrl_id_huella_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_huella_fk = (TextBox)ctrl_id_huella_fk;
					if (txt_id_huella_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_huella_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Id_huella_fk = Convert.ToInt32(txt_id_huella_fk.Text);
				}
				if(ctrl_id_huella_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_huella_fk = (ComboBox)ctrl_id_huella_fk;
					if (cmb_id_huella_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_huella_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Id_huella_fk = Convert.ToInt32(cmb_id_huella_fk.SelectedValue);
				}
				if(ctrl_id_cargahoraria_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_cargahoraria_fk = (TextBox)ctrl_id_cargahoraria_fk;
					if (txt_id_cargahoraria_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cargahoraria_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_cargahoraria_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_cargahoraria_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Id_cargahoraria_fk = Convert.ToInt32(txt_id_cargahoraria_fk.Text);
				}
				if(ctrl_id_cargahoraria_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_cargahoraria_fk = (ComboBox)ctrl_id_cargahoraria_fk;
					if (cmb_id_cargahoraria_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_cargahoraria_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Id_cargahoraria_fk = Convert.ToInt32(cmb_id_cargahoraria_fk.SelectedValue);
				}
				if(ctrl_id_empleado_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_empleado_fk = (TextBox)ctrl_id_empleado_fk;
					if (txt_id_empleado_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_empleado_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Id_empleado_fk = Convert.ToInt32(txt_id_empleado_fk.Text);
				}
				if(ctrl_id_empleado_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_empleado_fk = (ComboBox)ctrl_id_empleado_fk;
					if (cmb_id_empleado_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_empleado_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Id_empleado_fk = Convert.ToInt32(cmb_id_empleado_fk.SelectedValue);
				}
				if (txt_descripcion_ent_sal.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la descripcion_ent_sal","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_registro_es.Descripcion_ent_sal = txt_descripcion_ent_sal.Text;
				if (r)
					new_registro_es.Fecha_ent_sal_fin = dpk_fecha_ent_sal_fin;
				if (txt_tipo_trabajo.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la tipo_trabajo","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_registro_es.Tipo_trabajo = txt_tipo_trabajo.Text;
				if(ctrl_id_salario_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_salario_fk = (TextBox)ctrl_id_salario_fk;
					if (txt_id_salario_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_salario_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_salario_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_salario_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_registro_es.Id_salario_fk = Convert.ToInt32(txt_id_salario_fk.Text);
				}
				if(ctrl_id_salario_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_salario_fk = (ComboBox)ctrl_id_salario_fk;
					if (cmb_id_salario_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_salario_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_registro_es.Id_salario_fk = Convert.ToInt32(cmb_id_salario_fk.SelectedValue);
				}
				if (txt_res_comision.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la res_comision","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_registro_es.Res_comision = txt_res_comision.Text;

				if(!r)
					new_registro_es = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_registro_es;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_ent_sal,DateTime dpk_fecha_ent_sal,DateTime dpk_hora_entrada_ent_sal,DateTime dpk_hora_salida_ent_sal,TextBox txt_tipo_ent_sal,Control ctrl_estado_hora_salida_ent_sal,Control ctrl_id_huella_fk,Control ctrl_id_cargahoraria_fk,Control ctrl_id_empleado_fk,TextBox txt_descripcion_ent_sal,DateTime dpk_fecha_ent_sal_fin,TextBox txt_tipo_trabajo,Control ctrl_id_salario_fk,TextBox txt_res_comision)
		{
			try
			{
				registro_es new_registro_es =valida_campos_registro_es(ctrl_id_ent_sal,dpk_fecha_ent_sal,dpk_hora_entrada_ent_sal,dpk_hora_salida_ent_sal,txt_tipo_ent_sal,ctrl_estado_hora_salida_ent_sal,ctrl_id_huella_fk,ctrl_id_cargahoraria_fk,ctrl_id_empleado_fk,txt_descripcion_ent_sal,dpk_fecha_ent_sal_fin,txt_tipo_trabajo,ctrl_id_salario_fk,txt_res_comision); 
				if(new_registro_es!=null)
					GrabarViaSql(new_registro_es);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		public static bool grabar_actualizar_registro_personaliza(Control ctrl_id_ent_sal,DateTime dpk_fecha_ent_sal,DateTime dpk_hora_entrada_ent_sal,DateTime dpk_hora_salida_ent_sal,TextBox txt_tipo_ent_sal,Control ctrl_estado_hora_salida_ent_sal,Control ctrl_id_huella_fk,Control ctrl_id_cargahoraria_fk,Control ctrl_id_empleado_fk,TextBox txt_descripcion_ent_sal,DateTime dpk_fecha_ent_sal_fin,TextBox txt_tipo_trabajo,Control ctrl_id_salario_fk,TextBox txt_res_comision)
		{
			bool r = false;
			try
			{
				registro_es new_registro_es =valida_campos_registro_es(ctrl_id_ent_sal,dpk_fecha_ent_sal,dpk_hora_entrada_ent_sal,dpk_hora_salida_ent_sal,txt_tipo_ent_sal,ctrl_estado_hora_salida_ent_sal,ctrl_id_huella_fk,ctrl_id_cargahoraria_fk,ctrl_id_empleado_fk,txt_descripcion_ent_sal,dpk_fecha_ent_sal_fin,txt_tipo_trabajo,ctrl_id_salario_fk,txt_res_comision); 
				if(new_registro_es!=null)
				{
					r = true;
					GrabarViaSql(new_registro_es);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

	}
}
